import {
  inboundOldPage,
  inboundOldDetail,
  udpateApplyByIds,
  inStoreTypePageSelect,
} from '@/api/store'
import { getNetworkPageSelect } from '@/api/network'
import moment from 'moment'
import { ref } from 'vue'

/**
 * 入库表单
 */
// export const useWarehouseEntryForm = () => {
//   // 表单
//   const form = ref({
//     createTime: moment().format('YYYY-MM-DD HH:mm:SS'),
//     delInboundMaterialIds: [],
//     estimateTime: '',
//     id: '',
//     inboundMaterialVos: [],
//     remark: '',
//     reviewRemark: '',
//     source: 1,
//     storeType: 0,
//     typeId: '',
//   })

//   // 驳回入库单表单
//   const rejectForm = ref({
//     remark: '',
//   })

//   // 保存表单加载
//   const saveLoading = ref(false)

//   // 驳回入库单加载
//   const rejectLoading = ref(false)

//   /**
//    * 保存
//    */
//   // const add = async () => {
//   //   saveLoading.value = true
//   //   const res = await saveinboundCheck(form.value, 1)
//   //   saveLoading.value = false
//   //   return res.data
//   // }

//   /**
//    * 审核
//    */
//   const audit = async () => {
//     saveLoading.value = true
//     const res = await udpateApplyByIds(form.value)
//     saveLoading.value = false
//     return res.data
//   }

//   /**
//    * 重置表单
//    */
//   const resetForm = () => {
//     form.value = {
//       createTime: moment().format('YYYY-MM-DD HH:mm:SS'),
//       delInboundMaterialIds: [],
//       estimateTime: '',
//       id: '',
//       inboundMaterialVos: [],
//       remark: '',
//       reviewRemark: '',
//       source: 1,
//       storeType: 0,
//       typeId: '',
//     }
//   }

//   /**
//    * 驳回入库单
//    * @param {String} id - 入库单id
//    */
//   // const reject = async (id: string) => {
//   //   rejectLoading.value = true
//   //   const res = await rejectInbound(rejectForm.value, id)
//   //   rejectLoading.value = false
//   //   return res.data
//   // }

//   return {
//     form,
//     rejectForm,
//     saveLoading,
//     rejectLoading,
//     // add,
//     audit,
//     // reject,
//     resetForm,
//   }
// }

/**
 * 获取入库详情
 */
export const useGetWarehouseEntryDetail = () => {
  // 获取详情加载
  const getDetailLoading = ref(false)

  // 入库单详情
  const detail = ref({
    // archivedEmp: '',
    // archivedRemark: '',
    // archivedTime: '',
    // cancelEmp: '',
    // cancelRemark: '',
    // cancelTime: '',
    // createEmp: '',
    // createTime: '',
    // estimateTime: '',
    // id: '',
    // inboundEmp: '',
    // inboundNo: '',
    // inboundRemark: '',
    // inboundTime: '',
    // logisticsName: '',
    // logisticsNo: '',
    // logisticsRemark: '',
    // rejectEmp: '',
    // rejectRemark: '',
    // rejectTime: '',
    // remark: '',
    // reviewEmp: '',
    // reviewRemark: '',
    // reviewTime: '',
    // source: 1,
    // status: 1,
    // storeType: 0,
    // type: '',
    // typeId: '',
    // updateEmp: '',
    // updateTime: '',
  })

  /**
   * 获取详情
   * @param {String} id - 入库id
   */
  const getDetail = async (id: string) => {
    getDetailLoading.value = true
    const res = await inboundOldDetail(id)
    detail.value = res.data.data.row
    getDetailLoading.value = false
  }

  return {
    detail,
    getDetailLoading,
    getDetail,
  }
}

/**
 * 获取入库详情的产品列表
 */
// export const useGetWarehouseEntryDetailGoodList = () => {
//   // 获取产品列表加载
//   const getGoodListLoading = ref(false)

//   // 产品列表
//   const goodList = ref<Array<WarehouseEntryDetailGood>>([])

//   /**
//    * 获取产品列表
//    * @param {String} id - 入库id
//    */
//   const getGoodList = async (id: string) => {
//     getGoodListLoading.value = true
//     const res = await getInboundDetailMaterial(id)
//     goodList.value = res.data.data.row
//     getGoodListLoading.value = false
//   }

//   return {
//     goodList,
//     getGoodListLoading,
//     getGoodList,
//   }
// }

// 获取今日
const today = () => {
  const today = new Date() // 获取今天的日期
  const yyyy = today.getFullYear() // 获取年份
  const mm = today.getMonth() + 1 // 获取月份（注意月份是从0开始计数的，因此要加1）
  const dd = today.getDate() // 获取日期
  return yyyy + '-' + mm + '-' + dd
}

// 获取昨日
const yesterday = () => {
  const today = new Date() // 获取今天的日期
  const yesterday = new Date(today) // 通过复制今天的日期创建一个新的日期对象
  yesterday.setDate(today.getDate() - 1) // 将新日期对象的日期减去一天
  const yyyy = yesterday.getFullYear() // 获取年份
  const mm = yesterday.getMonth() + 1 // 获取月份（注意月份是从0开始计数的，因此要加1）
  const dd = yesterday.getDate() // 获取日期
  return yyyy + '-' + mm + '-' + dd
}

// 获取本周
const week = () => {
  const now = new Date()
  const dayOfWeek = now.getDay() // 获取今天是本周的第几天（0-6，0表示周日）

  // 计算本周一的日期
  // 如果今天是周日，则往前推6天得到上周一（这取决于你的业务需求，是否将周日算作本周的一部分）
  // 在这里，我们假设周一为一周的开始，并且如果今天是周日，我们仍然返回本周一（即上周日之后的那一天）
  const startOfWeek = new Date(now)
  startOfWeek.setDate(now.getDate() - dayOfWeek + (dayOfWeek === 0 ? -6 : 1))

  // 如果需要的话，可以格式化日期输出
  const options = { year: 'numeric', month: '2-digit', day: '2-digit' }
  const startFormatted = startOfWeek.toLocaleDateString('zh-CN', options).replace(/\//g, '-') // 将日期格式化为YYYY-MM-DD
  const todayFormatted = now.toLocaleDateString('zh-CN', options).replace(/\//g, '-') // 同样格式化当前日期

  // 返回日期范围对象
  return {
    start: startFormatted,
    today: todayFormatted,
  }
}

// 获取本月
const month = () => {
  const now = new Date() // 获取当前日期和时间
  const startOfMonth = new Date(now.getFullYear(), now.getMonth(), 1) // 本月第一天

  // 格式化日期输出
  const options = { year: 'numeric', month: '2-digit', day: '2-digit' }
  const startFormatted = startOfMonth.toLocaleDateString('zh-CN', options).replace(/\//g, '-') // 将日期格式化为YYYY-MM-DD
  const todayFormatted = now.toLocaleDateString('zh-CN', options).replace(/\//g, '-') // 同样格式化当前日期

  return {
    start: startFormatted,
    today: todayFormatted,
  }
}

/**
 * 获取入库列表
 */
export const useGetWarehouseInList = () => {
  // 获取列表加载
  const getListLoading = ref(false)

  const initParam = {
    dateType: null,
    endTime: '',
    limit: 50,
    page: 1,
    code: '',
    source: null,
    startTime: '',
    networkId: null,
    orderState: null,
  }

  // 获取列表请求参数
  const getListParam = ref({
    ...initParam,
  })

  // 列表
  const list = ref<Array<WarehouseInListItem>>([])

  // 列表总条数
  const listTotal = ref(0)

  /**
   * 获取列表
   */
  const getList = async () => {
    const form = { ...getListParam.value }
    if (form.dateType == 1) {
      const t = today()
      form.startTime = t
      form.endTime = t
    }
    if (form.dateType == 2) {
      const y = yesterday()
      form.startTime = y
      form.endTime = y
    }
    if (form.dateType == 3) {
      const w = week()
      form.startTime = w.start
      form.endTime = w.today
    }
    if (form.dateType == 4) {
      const m = month()
      form.startTime = m.start
      form.endTime = m.today
    }
    getListLoading.value = true
    const res = await inboundOldPage(form)
    list.value = res.data.data.rows
    listTotal.value = Number(res.data.data.total)
    getListLoading.value = false
  }

  /**
   * 重置搜索条件
   */
  const resetGetListParam = () => {
    getListParam.value = {
      ...initParam,
    }
  }

  /**
   * 审核
   */
  const audit = async (data) => {
    getListLoading.value = true
    const res = await udpateApplyByIds(data)
    getListLoading.value = false
    return res.data
  }

  return {
    list,
    listTotal,
    getListParam,
    getListLoading,
    getList,
    resetGetListParam,
    audit,
  }
}

/**
 * 获取网点下拉下拉选项
 */
export const useGetWarehouseInOptions = () => {
  // 获取选项加载
  const getOptionsLoading = ref(false)

  // 获取选项请求参数
  const getOptionsParam = ref({
    limit: 50,
    page: 1,
    name: '',
  })

  // 类型下拉选项
  const options = ref([])

  /**
   * 获取选项
   */
  const getOptions = async () => {
    getOptionsLoading.value = true
    const res = await getNetworkPageSelect(getOptionsParam.value)
    getOptionsLoading.value = false
    options.value = res.data.data.rows
  }

  return {
    options,
    getOptionsParam,
    getOptionsLoading,
    getOptions,
  }
}
